//动态下拉列表 by adam 2016-1-14
;(function($){
	$.extend($.fn,{
		dataSelect :function(options){
			var options=$.extend(true,{},$.fn.dataSelect.defaults,options);
			var $this=$(this);
			var this_value=$this.attr("value");//获取当前dom对象的值
			if(this_value){
				options.checkedValue=this_value;//设置为选中值
			}
			if(!options.data.code){
				options.data.code=$this.attr("code") || $this.attr("id");
			}
			if(!options.url){
				options.url ="../baseinfo/data_dictionary!getListByCode.action";
			}
			if(!options.name){
				options.name ="name";
			}
			if(!options.value){
				options.value ="value";
			}
			$.ajax({  
				url : options.url,  
				type : "post",
				cache : false,
				dataType : "json",
				data : options.data,
				success:function(data){
					if(!$this.hasClass("required")){
						var str = "<option value='-1'>--请选择--</option>";  
					}
					for(var i=0;i<data.length;i++){
						if(options.checkedValue){
							if(data[i][options.value]==options.checkedValue){
								str+="<option value='"+data[i][options.value]+"' selected='true'>"+data[i][options.name]+"</option>"
							}else{
								str+="<option value='"+data[i][options.value]+"'>"+data[i][options.name]+"</option>"
							}
						}else{
							if(data[i].isDefault=="1"){
								str+="<option value='"+data[i][options.value]+"' selected='true'>"+data[i][options.name]+"</option>"
							}else{
								str+="<option value='"+data[i][options.value]+"'>"+data[i][options.name]+"</option>"
							}
						}
					}  
					$this.html(str); 
				}  
			}); 
		},
		getSelectData : function(options){
			var options=$.extend(true,{},$.fn.dataSelect.defaults,options);
			var $this=$(this);
			var this_val=$.trim($this.attr("value"));//获取当前dom对象的值
			if(this_val){
				options.checkedValue=this_val;//设置为选中值
			}
			if(!options.data.code){
				options.data.code=$this.attr("code") || $this.attr("id");
			}
			if(!options.url){
				options.url ="../baseinfo/data_dictionary!getListByCode.action";
			}
			if(!options.name){
				options.name ="name";
			}
			if(!options.value){
				options.value ="value";
			}
			$.ajax({  
				url : options.url,  
				type : "post",  
				cache : false,  
				dataType : "json",
				data : options.data,
				success:function(data){
					for(var i=0;i<data.length;i++){
						if(data[i][options.value]==options.checkedValue){
							$this.text(data[i][options.name]); 
							return;
						}
					}  
				}  
			}); 
		},
		//多个下拉框也 只访问一次数据库，读取速度快
		fastDataSelect :function(options){
			var options=$.extend(true,{},$.fn.dataSelect.defaults,options);
			var $this=$(this);
			var codes="";
			var sObj =new Object();
			$this.each(function(){
				var c = $(this).attr("code") || $(this).attr("id");
				codes += c + ",";
				var cObj={
					$this : $(this),
					checkedValue : $(this).attr("value")
				}
				if(sObj[c]){
					sObj[c].push(cObj);
				}else{
					sObj[c] = [cObj];
				}
			})
			
			if(codes.length > 0){
				codes = codes.substring(0 , codes.length-1);
			}
			if(!options.data.code){
				options.data.code = codes;
			}
			if(!options.url){
				options.url ="../baseinfo/data_dictionary!getAllByCodes.action";
			}
			if(!options.name){
				options.name ="name";
			}
			if(!options.value){
				options.value ="value";
			}
			$.ajax({
				url : options.url,  
				type : "post",
				cache : false,
				async : false,
				dataType : "json",
				data : options.data,
				success:function(allData){
					for(var s in sObj){
						var data =allData[s];
						
						var cObjArr =sObj[s];
						for(var t in cObjArr){
							var cObj =cObjArr[t];
							var $this = cObj["$this"];
							var checkedValue = cObj["checkedValue"];
	
							var str ="";
							if(!$this.hasClass("required")){
								str = "<option value='-1'>--请选择--</option>";  
							}
							for(var i=0;i<data.length;i++){
								if(checkedValue){
									if(data[i][options.value]==checkedValue){
										str+="<option value='"+data[i][options.value]+"' selected='true'>"+data[i][options.name]+"</option>"
									}else{
										str+="<option value='"+data[i][options.value]+"'>"+data[i][options.name]+"</option>"
									}
								}else{
									if(data[i].isDefault=="1"){
										str+="<option value='"+data[i][options.value]+"' selected='true'>"+data[i][options.name]+"</option>"
									}else{
										str+="<option value='"+data[i][options.value]+"'>"+data[i][options.name]+"</option>"
									}
								}
							}  
							$this.html(str); 
						}
					}
				}
			}); 
		},
		//多个下拉框也 只访问一次数据库，读取速度快
		getFastSelectData : function(options){
			var options=$.extend(true,{},$.fn.dataSelect.defaults,options);
			var $this=$(this);
			var codes="";
			var sObj =new Object();
			$this.each(function(){
				var c = $(this).attr("code") || $(this).attr("id");
				codes += c + ",";
				var cObj={
					$this : $(this),
					checkedValue : $(this).attr("value")
				}
				sObj[c] = cObj;
			})
			
			if(codes.length > 0){
				codes = codes.substring(0 , codes.length-1);
			}
			if(!options.data.code){
				options.data.code = codes;
			}
			if(!options.url){
				options.url ="../baseinfo/data_dictionary!getAllByCodes.action";
			}
			if(!options.name){
				options.name ="name";
			}
			if(!options.value){
				options.value ="value";
			}
			$.ajax({
				url : options.url,  
				type : "post",
				cache : false,
				async : false,
				dataType : "json",
				data : options.data,
				success:function(allData){
					for(var s in sObj){
						var data =allData[s];
						var $this = sObj[s]["$this"];
						var checkedValue = sObj[s]["checkedValue"];

						for(var i=0;i<data.length;i++){
							if(data[i][options.value]==checkedValue){
								$this.text(data[i][options.name]); 
								break;
							}
						}  
					}
				}
			}); 
		},
	});
	//默认参数
	$.fn.dataSelect.defaults={
		url:"",				//下拉框数据源的url
		data : {},			//传递到后台的数据
		name:"name",		//下拉框中 options中的显示的字段，默认是name
		value:"value",		//下拉框中 options中存的值value，默认取的是value
		checkedValue:""		//默认选中的值
	};
})(jQuery);
/*
jQuery(function ($) {
	$(".data-select").each(function(){
		$(this).dataSelect({
			url:$(this).attr("value"),				//下拉框数据源的url 默认为该方法
			data : {																//传递到后台的数据
				code:$(this).attr("code")													//code默认为id值
			},			
			name:$(this).attr("opName"),		//下拉框中 options中的显示的字段，默认是name
			value:$(this).attr("opValue")		//下拉框中 options中存的值value，默认取的是value
		});
	})
});
*/
